home *** CD-ROM | disk | FTP | other *** search
/ Mac OS 9 Serial Number Archive / SN Archive 2023.11.04.toast / TSNG / TSNG 1.0.7 / Read Me next >
Encoding:
Text File  |  1996-04-23  |  12.1 KB  |  241 lines  |  [TEXT/R*ch]

  1. The SN# Gen
  2. ===========
  3.  
  4. As you should already know this app will generate (to a BBEdit text file) serial/registration numbers (randomizing whenever possible) for various Macintosh software.
  5.  
  6. It should go without saying, but there always seems to be a few morons out there so i'll say it anyway:
  7.  
  8. ••• DO NOT USE OR DISTRIBUTE THIS APP IN NON-ELITE ENVIRONMENTS…  •••
  9. •••           DOING SO WILL ONLY RUIN IT FOR EVERYONE             •••
  10. •••  THE FIRST TIME I HEAR OF A LEAK OF THIS APP WILL BE THE LAST •••
  11. •••                   THINK ABOUT IT…ENOUGH SAID                  •••
  12.  
  13. I ask that you do not include numbers generated by this app (at least not in wholesale fashion) in other reference lists, since: A) This app generates different numbers (whenever possible) each time it is run so that there is no quick/painless counter measure to it; B) doing so would only help to counter its effectiveness (mainly by shortening the longevity of the SN# algorithms staying static); C) it would just increase the file size of the other lists while adding little value beyond the first number.
  14.  
  15. The date and time at which the output file was generated is now included at the start of the file -- this is the zero date that all the chronologically dependent algorithms use in their calculations.
  16.  
  17. The names specified for 'Owner Name' and 'Macintosh Name' in the 'Sharing Setup' control panel are now the first two user names used for generating serial numbers from.  However this info is not saved to the 'Generated SN#s' file for security reasons -- instead you will see '<Sharing Owner Name>' and '<Sharing Machine Name>'.  This change supports the few programs which require using the 'correct' user and/or machine name to fully enable themselves. (eg: the Dejal products)
  18.  
  19. Currently you must use a resource editor if you wish to change the user/company names (you may specify up to 20) that are used during generation.  You may also change the number of copies to be licensed for (simultaneous users 1…9999, default is 10) and the number of serial numbers to generate (1…50 [this # is independent of the # of names you use], default is 3) for each product.  These values are stored in 'STR#' resources that are labeled so that changing them is  self explanatory.  In a future release i'll probably get these from a seperate text file in order to make customizing easier.
  20.  
  21. Currently the generation of large tables is internally disabled (the only one currently implemented is for System's Twilight - for now I have included a seperate text file) -- in a future release I will make generation of these a configurable option.
  22.  
  23. Ocassionally you will see output of the form:
  24.  
  25. Illegal name:    '<the illegal name>'
  26.  
  27. This only occurs when the given user name does not meet all the conditions placed upon it -- this is almost always due to the name being too short or containing only white space. (Don't be a moron -- using white space only, prefixed, or suffixed names is just dumb)
  28.  
  29. All of the serial number routines were tested with at least one number and usually more - however it is still possible that an error may have crept in, or a subtle point may have been missed during reverse engineering that only shows up some of the time --- so if you encounter an entry that doesn't work make sure you've got at least the given version of the product in question.  If it still won't work complain with the complete details and it will (probably) get fixed.
  30.  
  31. If you have new or better algorithms (in some cases there is sufficient ambiguity [not always intended!] in the checking algorithm to allow multiple solutions to the inversion problem, with complete generality being the nicest but hardest to obtain) for current (ie: non-legacy) products feel free to submit them and a few examples of _known valid_ codes. (most useful would be C code that actually compiles - but intelligeble pseudo code will do)
  32.  
  33. Another item that would be useful is the actual _correct_ format of serial numbers for products which this app generates numbers for.  (in the case of a discrepancy only -- most of the time it is possibly to fully invert the checking algorithm and thus obtain the format of the serial number, but not always, in which case a reasonable/arbitrary _working_ guess is made)
  34.  
  35. If there is some _current_ product you wish to see included here that _requires_ (ie: is dependent upon user name and/or number of copies or needs unique network serial numbers) a generator feel free to request it. 
  36.  
  37. MISSION STATEMENT:  Copy protection (CP) is an annoying nuisance that is ineffective.  Serial number generators force software publishers to either: Accept the fact that their CP scheme is useless (possibly/hopefully abandoning it and the overhead of managing serial numbers) or; change their CP method/scheme and issue new serial numbers to their entire user-base for every release of their software.  In this way the easy counter-counter-measure (of simply just checking for known elite name/password combos with each new release) that some authors (eg: Realmz's author) currently take is eliminated (since they won't know what names/numbers to target).
  38.  
  39. Future release versions will entirely supersede this release so there is _absolutely no need_ to keep old versions lying around.
  40.  
  41. Supported Products
  42. ===================
  43. 4D Online Help
  44. Aladdin Desktop Tools
  45. Apeiron
  46. AXS Online Reader
  47. Barrack
  48. CalcWorks
  49. CD Directory
  50. Chiral
  51. ColorSwitch
  52. Compact Pro
  53. Cyber Finder
  54. DeBabelizer
  55. Dejal QuickEncrypt
  56. Dejal SndCataloguer
  57. Dejal SndConverter Lite/Pro
  58. Dejal SndPlayer
  59. Dejal Text Utilities (TextConverter/TextMerge/TextSplitter)
  60. Developer VISE
  61. Developer VISE Lite
  62. DiskDup Pro
  63. DiskTools Collection
  64. DiskTracker
  65. Dome Wars
  66. Eclipse
  67. File Buddy
  68. FontBox
  69. Giza
  70. GraphicConverter
  71. Maelstrom
  72. MathType
  73. Now Bundle
  74. Now Contact
  75. Now Quick&Easy
  76. Now UpToDate
  77. Now Utilities
  78. PowerBar Pro
  79. Realmz
  80. Realmz - Assault on Giant Mountain
  81. Realmz - Castle in the Clouds
  82. Realmz - Prelude to Pestilence
  83. ScrapIt Pro
  84. Smaller Installer
  85. Snapz
  86. SoundEdit 16
  87. Stuffit Deluxe
  88. Stuffit InstallerMaker
  89. Swoop
  90. Systems Twilight
  91. TechTool Pro
  92. Ultima III
  93. UltraFind
  94. Updater VISE
  95. Versatile Pro
  96.  
  97. Miscellania for would be CP Reverse Engineers
  98. =============================================
  99.  
  100. There a only a few basic non-keydisk, non-HW Dongle copy protection schemes in wide use:
  101.  
  102. 1)    Just a SN#/Reg Code (and possibly version#/id) that has certain
  103.     mathematical/string properties.
  104. 2)  A Name/ID (given or enterable) field, a copies_Licensed field, version#,
  105.     and SN#/Reg Code which is derived by manipulating and combining the Name/ID
  106.     field and the copies_Licensed.
  107. 3)    A time (date) based/limited SN#/Reg Code of type #1 or #2 above.
  108.  
  109. All of these protection schemes can in general be circumvented by a process of reverse engineering the SN# checking algorithm(s) during runtime (by using a debugger).  In general you try to get an interrupt at or near the beginning of the SN# checking code (this step can require some insight - but 95% of the time placing a local ATrap break on GetIText, StringToNum, NumToString, DisposeDialog, HiliteControl, and/or ModalDialog will work).  Once you find the start of the checking code you simply (or sometimes not so simply) symbolically disassemble the assembly code into pseudo or C code (I use a mixture myself).  Ninety percent of the time you will see some code which reads in all the user input fields (possibly upper or lower casing them), checks to see if they are within a certain length and data type ranges (eg: Name>=4 chars with no digits, sn#=digits and >0).  After these preliminaries you get to the actual heart of the method used.  Typically you find code that does any/all of the following type of actions in various combinations:
  110.  
  111. A)    Copy/Splice field(s) or subfield(s) to/into new variable(s). (ie BlockMove)
  112. B)  Convert a string/character (not necessarily numeric) to a numeric variable
  113.     via StringToNum or a custom conversion routine (often the base involved is
  114.     not 10 but a prime or power of 2 such as 8,16, and 32). [or, inversely 
  115.     convert a number to a base b string]
  116. C)  Add/multiply/eor/ect... up the value of the characters in a string -
  117.     possibly including the length byte in the case of pascal strings.
  118. D)    Perform mathematical operations (often via library calls) such as integer
  119.     division (/), remainder upon integer division (mod,%), exclusive-oring
  120.     (xor,eor,^), oring (or,|), multiplication, addition, and subtraction. (note
  121.     be careful to observe the size and sign of the operations - ie byte, word,
  122.     long and signed or unsigned).
  123. E)    read/load in data from an internal table.  (one table of $100 longwords is
  124.     particularily popular)
  125. F)  do 1 of n manipulations as selected by the value/state of some data.
  126. G)    loop over all or some of the elements in a string/number and perform any
  127.     of these actions for each element.
  128.  
  129. The last step in the SN# checking code is almost always the direct comparison of two values (usually longwords, but sometimes character strings) -- although sometimes the comparison is distributed throughout the checking algorithm calculation itself. Sometimes one these values is simply just the numerical value of your SN#, but more often the slightly indirect method of mangling both your SN#/reg code and all other fields into character string or numeric values and then comparing them is used.  This second approach and generalizations upon it usually prove more difficult to invert in general -- as it requires reversing (at least partially inverting) a greater number of steps, often with more restrictions on intermediate values as opposed to restrictions on the terminal or input variables.
  130.  
  131. Version History
  132. ===============
  133.  
  134. 1.0.8 (DNE yet… this is a 'to do' list for me)
  135. -----
  136. include arbitrary length longint library and implement generator for loanPro
  137.  
  138.  
  139. 1.0.7 (another minor update with some tweaking)
  140. -----
  141. added finder icons and balloon help string.
  142. output TEXT files creator made user configurable. (change 'STR ' #128)
  143.  
  144. Added yet more generators still…
  145.  
  146. Conflict Catcher 3.x.x (3.0.4)
  147. MultiClip Pro 3.2 (3.2alpha)
  148. Ram Disk Saver 2.0.x (2.0)
  149. URL Manager 1.1.x (1.1.4)
  150.  
  151. 1.0.6 (added header time stamp and a few new generators)
  152. -----
  153. As a aid to maintenance I'm changing the format used to list new generators to include, in brackets, the latest version actually tested.
  154.  
  155. Added Generator for:
  156.  
  157. CalcWorks 1.5.x (1.5.1)
  158. CD Directory 1.0.x (1.0.2)
  159. FontBox 1.7.x (1.7.1)       [only 3 unique SN#'s are possible per day]
  160. SoundEdit 16 2.0.x (2.0)
  161.  
  162. 1.0.5 (in case you were wondering 1.0.4 only lasted a couple of hours…)
  163. -----
  164. Changed some of the default names to coincide with the names that Bookworm is using so that it is easier to (further) verify my code against (a greater number of) known valid serial numbers.
  165.  
  166. Added Generator for:
  167.  
  168. DiskTracker 1.0.x (1.0.2)
  169.  
  170. 1.0.4 (a few new generators plus major internal restructuring)
  171. -----
  172. Sharing Setup Owner/Machine names are now used as the first two user names.
  173. Reordered output so products are listed in _mostly_ alphabetical order.
  174.  
  175. Added Generators for:
  176.  
  177. Now Utilities 6.0 (6.0)
  178. Dejal QuickEncrypt 2.x (2.1)
  179. Dejal SndConverter Lite/Pro 2.x (2.3)
  180. Dejal SndCataloguer 2.x (2.3)
  181. Dejal SndPlayer 2.x (2.3)
  182. Dejal TextUtilities (TextConverter 1.x/TextMerge 2.x/TextSplitter 2.x)
  183.  
  184. 1.0.3 (now compiled with CodeWarrior 8 - the lmodu glue code bug is no more)
  185. -----
  186. Added Generators for:
  187.  
  188. 4D Online Help 3.0.x (3.0.5)
  189. Apeiron
  190. Barrack 1.0.x
  191. Chiral
  192. ColorSwitch 2.3.x (2.3.0)
  193. DiskDup Pro 1.0.3 (1.0.3)
  194. Eclipse 3.x.x
  195. File Buddy 3.x.x (3.4.3)
  196. Giza 2.x.x (2.0.0)
  197. Maelstrom
  198. MathType 3.x
  199. PowerBar Pro 2.5.x (2.5)
  200. Snapz
  201. Swoop
  202. TechTool Pro 1.0.x (1.0.1)
  203. UltraFind 2.x.x (2.2)
  204.  
  205. 1.0.2 (Initial release under the name 'The SN# Gen')
  206. -----
  207. Added Generators for:
  208.  
  209. AXS Online Reader 1.0.x
  210. Aladdin Desktop Tools 1.0.x (1.0.1)
  211. Compact Pro 1.5.x
  212. Cyber Finder 2.x
  213. DeBabelizer 1.6.x
  214. DiskTools Collection 3.x.y
  215. Dome Wars 1.x.x
  216. GraphicConverter 2.x.x (2.4)
  217. Now Bundle 3.5.x
  218. Now Contact 3.5.x
  219. Now Quick&Easy 1.0.x
  220. Now UpToDate 3.5.x
  221. Now Utilities 5.0.x (5.0.2)
  222. Realmz 2.x.x
  223. Realmz Assault on Giant Mountain
  224. Realmz Castle in the Clouds
  225. Realmz Prelude to Pestilence
  226. ScrapIt Pro 5.x.x
  227. Smaller Installer 1.1.x
  228. Stuffit Deluxe 3.5.x
  229. Stuffit InstallerMaker 2.0.x
  230. Systems Twilight 1.0.x Access Codes & Passwords
  231. Ultima III 1.x
  232. Versatile Pro 1.6.x
  233.  
  234. 1.0.1,1.0 (premature proof of concept releases)
  235. ---------
  236. Generators for:
  237.  
  238. Developer VISE 3.5
  239. Developer VISE Lite 3.5
  240. Updater VISE 1.0.1
  241.